//LCR 016. 无重复字符的最长子串
// 思路：滑动窗口


#include <algorithm>
#include <string>
using namespace std;

class Solution
{
public:
    int lengthOfLongestSubstring(string s)
    {
        int hash[128] = {0};
        int n = s.size(), len = 0;
        int left = 0, right = 0;
        while(right < n)
        {
            hash[s[right]]++;// 进窗口
            while(hash[s[right]] > 1)// 判断
            {
                hash[s[left++]]--;
            }
            len = max(len, right-left+1);// 每步都更新结果
            right++;// 让元素进入下一个窗口
        }
        return len;
    }
};